package com.example.swordjava;


import java.util.ArrayList;
import java.util.Arrays;

public class Test8 {

    public static void main(String[] args) {

        int[] a = {2, 3, 1, 0, 2, 5, 3};

    }

    public static class TreeLinkNode {
        int val;
        TreeLinkNode left = null;
        TreeLinkNode right = null;
        TreeLinkNode next = null;

        TreeLinkNode(int val) {
            this.val = val;
        }
    }

    /**
     * 给定一个二叉树其中的一个结点，请找出中序遍历顺序的下一个结点并且返回。注意，树中的结点不仅包含左右子结点，同时包含指向父结点的next指针。
     */

    ArrayList<TreeLinkNode> linkNodes = new ArrayList<>();

    public TreeLinkNode GetNext(TreeLinkNode pNode) {
        TreeLinkNode root = pNode;
        while (root.next != null) {
            root = root.next;
        }
        inOrder(root);
        for (int i = 0; i < linkNodes.size() - 1; i++) {
            if (linkNodes.get(i) == pNode) {
                return linkNodes.get(i + 1);
            }
        }
        return null;
    }

    void inOrder(TreeLinkNode treeLinkNode) {
        if (treeLinkNode != null) {
            inOrder(treeLinkNode.left);
            linkNodes.add(treeLinkNode);
            inOrder(treeLinkNode.right);
        }
    }

}
